import axios from "axios";

interface AxiosStatus {
    code?: number,
    msg?: string
}

/**
 * axios的二次封装
 */

const http = axios.create({
    baseURL: "/api",
    timeout: 20000
})

interface RequestType {
    get(url: string, data?: any, config?: any): any,
    post(url: string, data?: any, config?: any): any
}

const request: RequestType = {
    get: (url: string, data = {}, config = {}) =>
        http.get(url, {
            params: data,
            ...config
        })
    ,
    post: (url: string, data = {}, config = {}) => {
        http.post(url, data, config)
    }
}

// request.get(url: string, data = {}, config = {}) {
//     return this.instance.get<AxiosStatus>(url, {
//         params: data,
//         ...config
//     })
// }


export default request



// class Http {
//     public instance
//     constructor() {
//         this.instance = axios.create({
//             baseURL: "/api",
//             timeout: 20000
//         })

//         // 添加响应拦截器
//         this.instance.interceptors.response.use((response) => {
//             if (response.status == 200 && response.data.code == 200) {
//                 return response.data
//             } else {
//                 console.log(response);
//                 new Error("请求失败")
//                 return response.data
//             }
//         })
//     }

//     /**
//      * @description
//      * @param {string} url
//      * @param {object} data
//      * @param {object} config
//      */
//     get(url: string, data = {}, config = {}) {
//         return this.instance.get<AxiosStatus>(url, {
//             params: data,
//             ...config
//         })
//     }

//     /**
//      * @description
//      * @param {string} url
//      * @param {object} data
//      * @param {object} config
//      */
//     post(url: string, data = {}, config = {}) {
//         return this.instance.post(url, data, config)
//     }

//     /**
//      * @description
//      * @param {string} url
//      * @param {object} data
//      * @param {object} config
//      */
//     delete(url: string, data = {}, config = {}) {
//         return this.instance.delete(url, {
//             params: data,
//             ...config
//         })
//     }
//     /**
//         * @description
//         * @param {string} url
//         * @param {object} data
//         * @param {object} config
//         */
//     patch(url: string, data = {}, config = {}) {
//         return this.instance.patch(url, data, config)
//     }





// }

// const request = new Http()

// export default request